﻿using Rhino.PlugIns;
using Rhino;
using System.Linq;
using System;
using System.IO;
using YangTools.Realization;

namespace YangTools
{

    public class YangToolsPlugIn : Rhino.PlugIns.PlugIn
    {
        /// <summary>
        /// 只读属性
        /// 设置插件加载时间，默认为 WhenNeeded :当第一次使用插件的某个指令时
        /// 这里设置为 AtStartup 让 Rhino 打开时加载插件，可以用于检测工具集是否加载
        /// </summary>
        public override PlugInLoadTime LoadTime => PlugInLoadTime.AtStartup;

        /// <summary>
        /// 只读属性
        /// 重写该属性可以设置插件名称
        /// </summary>
        protected override string LocalPlugInName => "YangTools";

        /// <summary>
        /// YangTools 插件信息的构造方法
        /// </summary>
        public YangToolsPlugIn()
        {
            Instance = this;
        }

        ///<summary>
        ///获取 YangToolsPlugIn 插件的唯一实例
        ///</summary>
        public static YangToolsPlugIn Instance
        {
            get; private set;
        }


        // 你可以重写一些方法来改变插件加载和关闭时的行为、在选项面板添加自定义页

        /// <summary>
        /// 当插件加载时自动调用这个方法
        /// 可以用来加载工具集等
        /// </summary>
        /// <param name="errorMessage">错误信息</param>
        /// <returns></returns>
        protected override LoadReturnCode OnLoad(ref string errorMessage)
        {
            // 注意：在重写这个方法，必须保证每一条选择路径都有 base.OnLoad(ref errorMessage) 否则将无法正常加载命令，除非你知道他原本的操作，自主补全命令加载的其他操作
            var tool = new Toolbar();
            var res = tool.Load();
            if (res==null)
            {
                errorMessage = "找不到工具列文件，请检查插件是否完整";
            }
            return base.OnLoad(ref errorMessage);
        }
    }
}